package com.maikobi.maikobi.exception;

import com.maikobi.maikobi.common.ErrorCode;
import lombok.Getter;

/**
 * 自定义业务异常类，用于处理业务逻辑中的错误情况
 * @author: Maiko7
 * @create: 2025-07-13 15:23
 */
@Getter
public class BusinessException extends RuntimeException {

    /**
     * 异常码
     */
    private final int code;

    /**
     * 描述
     */
    private final String description;

    /**
     * 直接使用 ErrorCode 枚举构造异常
     *
     * @param errorCode 错误码枚举，包含错误码、消息和描述
     */
    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = errorCode.getDescription();
    }

    /**
     * 使用 ErrorCode 枚举 + 自定义描述
     *
     * @param errorCode 错误码枚举，包含错误码和消息
     * @param description 自定义描述信息
     */
    public BusinessException(ErrorCode errorCode, String description) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = description;
    }

    /**
     * 自定义 code + message +  description
     *
     * @param code 错误码
     * @param message 错误消息
     * @param description 描述信息
     */
    public BusinessException(int code, String message, String description) {
        super(message);
        this.code = code;
        this.description = description;
    }
}
